Módulo:Listas
local listas = {} local existeCategoria = require('Módulo:Páginas').existeCategoria -- Función que devuelve los elementos de la lista. -- Solo se obtienen los elementos informados. function listas.ObtenerElementosLista(frame) local Argumentos = frame.args; local parent = frame:getParent(); if not Argumentos1 then Argumentos = parent.args; end local categoria=Argumentos'categoría' or '' local ordenar =Argumentos'ordenar' or '' local ElementosLista = {} local i = 1; local j=0; while Argumentosi do if Argumentosi ~= '' then j=j+1 -- Eliminar el texto ente paréntesis del argumento i-ésimo si es de la forma -- "Texto (lo que sea)". -- Esto solo se hará si después de los paréntesis no hay nada. Ejemplos: -- Alfonso Albacete (director) --> Alfonso Albacete -- Carlos Vera --> Carlos Vera local TextoAMostrar=Argumentosi:match('^(.*)%s%(.*%)$') or Argumentosi -- Añadir el enlace si no incluye ya uno local enlazar = frame.args.enlazar or parent.args.enlazar if mw.ustring.find(Argumentosi, '%[%then enlazar = 'no' end if enlazar 'sí' then --Obtener el espacio de nombres de los argumentos local espacio_nombres=frame.args.nspace or parent.args.nspace or frame.args['espacio de nombres' or parent.argsde nombres' or mw.title.getCurrentTitle().nsText if espacio_nombres '' then --Se accede a la función con el argumento espacio_nombres pero está sin informar if Argumentosi TextoAMostrar then ElementosListaj = mw.ustring.format('%s',TextoAMostrar) else ElementosListaj = mw.ustring.format('%s',Argumentosi,TextoAMostrar) end else --Se accede sin el espacio de nombres (en cuyo caso se toma el espacio de nombres desde global) o informado. --Obtener el nombre de la página (eliminando el espacio de nombres si lo tiene). Similar a --Por ejemplo, si argumentosi vale "Plantilla:A" se informa nombrepagina con "A". local nombrepagina local noError, pageObject = pcall(mw.title.new, Argumentosi) if noError then nombrepagina = pageObject.text else nombrepagina = Argumentosi end -- Enlazar tomando como espacio de nombres el recibido en el argumento o el global. ElementosListaj = mw.ustring.format( '%s',espacio_nombres,nombrepagina,TextoAMostrar) end else ElementosListaj = TextoAMostrar end -- Añadir el delimitador local delimitador = frame.args.delimitador or parent.args.delimitador or frame.args.delim or parent.args.delim if delimitador then ElementosListaj = delimitador .. ElementosListaj .. delimitador end --Añadir la categoría if categoria ~= '' then -- Utilizar argumentosi si existe la correspondiente categoría local CategoriaElemento = existeCategoria(categoria:gsub('$1',Argumentosi)) -- Si no existe ver si existe la categoría eliminando el texto entre paréntesis if not CategoriaElemento and TextoAMostrar ~= Argumentosi then CategoriaElemento = existeCategoria(categoria:gsub('$1',TextoAMostrar)) end if CategoriaElemento then if ordenar '' then ElementosListaj = ElementosListaj .. '' .. CategoriaElemento .. '' else ElementosListaj = ElementosListaj .. '' .. ordenar .. '' end end end end i = i + 1; end return ElementosLista end -- lista con los elementos separados por comas function listas.lista(frame) -- Obtener los elementos de la lista informados. local ElementosLista= listas.ObtenerElementosLista(frame) if not ElementosLista1 then return end return mw.text.listToText(ElementosLista,', ',' y ') end function listas.listahtml(frame) local parent = frame:getParent(); -- Obtener los elementos de la lista informados delimitándolos con local ElementosLista= listas.ObtenerElementosLista(frame) if not ElementosLista1 then return end -- Añadir a los elementos de la lista y local i = 1; while ElementosListai do ElementosListai = ' ' .. ElementosListai .. ' ' i = i + 1; end -- Añadir la clase en su caso local clase = frame.args.clase or parent.args.clase if clase then return '' .. ' ' .. table.concat( ElementosLista ) .. ' ' else --Devolver la lista return ' ' .. table.concat( ElementosLista ) .. ' ' end end return listas